package com.AdvancedDemos.集合.单列集合;

import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;

public class LearnSet {
    public static void main(String[] args) {
        /**
         *
         * Set<E>系列集合的特点:元素不允许重复,无索引,[通常存取无序,添加数据的顺序和获取数据的顺序不一致]
         *
         * Set系列集合中
         * HashSet<E> 添加的元素是无序的,不重复的,无索引的 ,
         * LinkedHashSet<E> 中的元素是有序的,不重复的,无索引的,
         * TreeSet<E> 按照大小默认升序排序,不重复的,无索引的
         *
         * Set要用到的常用方法,基本上就是Collection提供的,自己几乎没有额外新增一些常用功能
         */
        Set<Integer> set = new HashSet<>();//Set是接口不能new对象,可以用接口变量指向其实现类,如HashSet
        set.add(666);
        set.add(555);
        set.add(555);
        set.add(555);
        set.add(777);
        set.add(777);
        set.add(888);
        set.add(888);
        System.out.println(set);//[888, 777, 666, 555] 说明HashSet是无序的不重复的 无索引的

        set = new LinkedHashSet<>();
        set.add(666);
        set.add(555);
        set.add(555);
        set.add(555);
        set.add(777);
        set.add(777);
        set.add(888);
        set.add(888);
        System.out.println(set);//[666, 555, 777, 888] 说明LinkedHashSet是有序的,但是不重复,无索引


        set = new TreeSet<>();
        set.add(666);
        set.add(555);
        set.add(555);
        set.add(555);
        set.add(777);
        set.add(777);
        set.add(888);
        set.add(888);
        System.out.println(set);//[555, 666, 777, 888] 说明TreeSet是按照大小默认升序排序的,不重复,无索引
    }
}
